package com.hotel.mvc.controller;

import hbm.ClienteDAO;
import hbm.Usuario;

import java.io.IOException;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import Encrypter.StringEncrypter;
import Encrypter.StringEncrypter.EncryptionException;


/**
 * Servlet implementation class for Servlet: UsuariosControlador
 *
 */
 public class UsuarioController extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    /**
	 *
	 */
	private static final long serialVersionUID = 1L;


	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String opcion = request.getParameter("boton");
		String ingreso = request.getParameter("opcion");
		
		if (ingreso!=null && ingreso.equals("Ingresar")){
			response.sendRedirect("./jsp/registro.jsp");
		}
		
		if (opcion!=null && opcion.equals("Guardar")){
			
			String nombre = request.getParameter("txtUsuario");
			String password = request.getParameter("txtPassword");
			StringEncrypter encrypt = new StringEncrypter();
			try {
				String EncryptedPass =encrypt.encrypt(password);
				Usuario usuario = new Usuario(nombre,EncryptedPass);
				Session session = new ClienteDAO().getSession();
				Transaction tx = session.beginTransaction();
				session.save(usuario);
				tx.commit();
				session.close();
				response.sendRedirect("./jsp/menuadmin.jsp");
			} catch (EncryptionException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}

		if (opcion!=null && opcion.equals("Entrar")){
			Integer id;
			String nombre = request.getParameter("txtUsuario");
			String password = request.getParameter("txtPassword");
			StringEncrypter encrypt = new StringEncrypter();
			try {
				String EncryptedPass =encrypt.encrypt(password);
				String SQL_QUERY =" from Usuario as user WHERE user.nombre='"+nombre+"' and user.password='"+EncryptedPass+"'";
				Session session = new ClienteDAO().getSession();
				Query query = session.createQuery(SQL_QUERY);
				boolean existUser=false;
				for(Iterator it=query.iterate();it.hasNext();){
				    Usuario usuario=(Usuario)it.next();
				    id=usuario.getId();
					System.out.println("ID: " + usuario.getId());
				    System.out.println("Name: "	+ usuario.getNombre());
				    existUser = true;
				    session.close();

					if (!existUser){
						request.getSession().removeAttribute("usuario");
						response.sendRedirect("./login.jsp");
					}else{
						//request.getSession().setAttribute("usuario", user);
						if (id==1)
						response.sendRedirect("./jsp/menuadmin.jsp");
					}
					if (id!=1)
						response.sendRedirect("./jsp/menuoperator.jsp");
					}
		
				
			} catch (EncryptionException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			//Usuario usuario = new Usuario(nombre,password);
						
		}

	}
}